package com.xoms.admin.persist.dao;

import java.util.List;

import com.xoms.admin.model.ProBreakageBean;
import com.xoms.admin.model.ProBreakageDetailBean;
import com.xoms.admin.model.vo.AuditBreakageBean;
import com.xoms.admin.model.vo.BatchBreakageBean;
import com.xoms.admin.model.vo.ProBreakageVo;

public interface ProBreakageDao {

	/**
	 * 查询报损数量
	 * @param key
	 * @param storeHouseId
	 * @param storeId 
	 * @return
	 */
	int selectCount(String startTime, String endTime, String storeId);

	/**
	 * 查询报损列表
	 * @param page
	 * @param pageSize
	 * @param startTime
	 * @param endTime
	 * @param storeHouseId
	 * @return
	 */
	List<ProBreakageBean> selectList(int page, int pageSize, String startTime, String endTime,
			String storeHouseId);
	
	/**
	 * 根据入库单id查找关联的报损单信息
	 * @param sid
	 * @return
	 */
	ProBreakageBean selectOneByStockId(String sid);
	
	/**
	 * 查询当年最大报损单单号
	 * @return
	 */
	String selectMaxNoInYear();
	
	/**
	 * 更新报损单
	 * @param br
	 * @return
	 */
	int replace(ProBreakageBean br);
	
	/**
	 * 批量更新报损详单
	 * @param breaks 
	 * @return
	 */
	int replaceBatchDetail(List<BatchBreakageBean> breaks);
	
	/**
	 * 获取报损单详情列表数量
	 * @param bid
	 * @return
	 */
	int selectDetailCount(String bid);
	
	/**
	 * 获取报损单详情列表
	 * @param bid
	 * @param page
	 * @param pageSize
	 * @param paging
	 * @return
	 */
	List<ProBreakageDetailBean> selectDetailList(String bid, int page, int pageSize, int paging);
	
	/**
	 * 新建报损单
	 * @param data
	 * @return
	 */
	int insert(ProBreakageBean data);
	
	/**
	 * 更新报损信息
	 * @param data
	 * @return
	 */
	int update(ProBreakageBean data);
	
	/**
	 * 根据id获取报损信息
	 * @param bid
	 * @return
	 */
	ProBreakageBean selectOneById(String bid);
	
	/**
	 * 删除bid关联历史记录
	 * @param bid
	 * @return
	 */
	int delDetails(String bid);
	
	/**
	 * 删除报损
	 * @param bid
	 * @return
	 */
	int del(String bid);
	
	/**
	 * 更新审核状态
	 * @param bid
	 * @param i
	 * @return
	 */
	int updateSubmitStatus(String bid, int i);
	
	/**
	 * 获取审核报损单详情
	 * @param aid
	 * @return
	 */
	AuditBreakageBean selectAuditBreakagesById(String aid);
	
	/**
	 * 查询报损商品的仓库库存数量和成本
	 * @param targetId
	 * @return
	 */
	List<ProBreakageVo> selectProductListByBid(String targetId);

}
